﻿using System;
using System.Collections;
using System.Data;
using System.Data.Common;
using System.Collections.Generic;

using WHC.Pager.Entity;
using Microsoft.Practices.EnterpriseLibrary.Data;
using Carmall.Entity;
using Carmall.IDAL;

namespace Carmall.DAL
{
    /// <summary>
    /// Modules 的摘要说明。
    /// </summary>
    public class Modules : BaseDAL<ModulesInfo>, IModules
    {
        #region 对象实例及构造函数

        public static Modules Instance
        {
            get
            {
                return new Modules();
            }
        }
        public Modules()
            : base("modules", "ModuleID")
        {
            this.IsDescending = false;
        }

        #endregion

        /// <summary>
        /// 将DataReader的属性值转化为实体类的属性值，返回实体类
        /// </summary>
        /// <param name="dr">有效的DataReader对象</param>
        /// <returns>实体类对象</returns>
        protected override ModulesInfo DataReaderToEntity(IDataReader dataReader)
        {
            ModulesInfo modulesInfo = new ModulesInfo();
            SmartDataReader reader = new SmartDataReader(dataReader);


            modulesInfo.ModuleID = reader.GetInt32("ModuleID");
            modulesInfo.ParentID = reader.GetInt32("ParentID");
            modulesInfo.ModuleName = reader.GetString("ModuleName");
            modulesInfo.Route = reader.GetString("Route");


            return modulesInfo;
        }

        /// <summary>
        /// 将实体对象的属性值转化为Hashtable对应的键值
        /// </summary>
        /// <param name="obj">有效的实体对象</param>
        /// <returns>包含键值映射的Hashtable</returns>
        protected override Hashtable GetHashByEntity(ModulesInfo obj)
        {
            ModulesInfo info = obj as ModulesInfo;
            Hashtable hash = new Hashtable();


            hash.Add("ModuleID", info.ModuleID);
            hash.Add("ParentID", info.ParentID);
            hash.Add("ModuleName", info.ModuleName);
            hash.Add("Route", info.Route);


            return hash;
        }
    }
}